int parse_dns_response(char* return_ip)
{// addr = 0x0804DCB4
    unsigned char[1023] buf;
    unsigned char* ptr;
    struct sockaddr_in addr;
    int n;
    int i;
    int flag;
    int querys;
    int answers;
    int type;
    int ttl;
    int datalen;
    int len;
    char[127] cname;
    char[127] aname;
    char[19] ip;
    unsigned char[3] netip;
    size_t addr_len;
    fd_set rsetfds;
    struct timeval tv;
    int nOnline;
    int __d0;
    int __d1;
    intOrPtr _v16;
    int _v20;
    signed int _v24;
    signed int _v28;
    intOrPtr _v32;
    signed int _v36;
    signed int _v40;
    signed int _v44;
    signed int _v48;
    int _v52;
    intOrPtr _v56;
    unsigned char* _v60;
    unsigned char _v1084;
    char _v1100;
    int _v1104;
    char _v1232;
    char _v1360;
    char _v1380;
    char _v1384;
    char _v1388;
    char _v1516;
    int _v1520;
    char _v1524;
    int _v1536;
    char* _v1544;
    char* _v1548;
    int _v1552;
    int _v1556;
    signed int _v1560;
    _unknown_ r6;
    _unknown_ _t123;
    _unknown_ _t127;
    signed int _t130;
    intOrPtr _t133;
    signed short _t137;
    signed short _t142;
    signed short _t159;
    intOrPtr _t163;
    signed short _t167;
    _unknown_ _t174;
    _unknown_ _t177;
    _unknown_ _t179;
    _unknown_ _t182;
    _unknown_ _t191;
    _unknown_ _t192;
    _unknown_ _t193;
    _unknown_ _t197;
    char* _t200;

    _v60 =  &_v1084;
    _v1388 = 16;
    _v1524 = 3;
    _v1520 = 0;
    __ebx = 0;
    _t200 =  &_v1516;
    asm("cld ");
    _push(32 << 2);
    _push(__ebx);
    _push(_t200);
    memset();
    __esp =  &(__esp[3]);
    _t201 = _t200 + 32;
    _v20 = 0;
    _v16 = _t200 + 32;
    asm("bts [ebp+edx*4+0xfffffa18], eax");
    _v1548 =  &_v1524;
    _v1552 = 0;
    _v1556 = 0;
    _t130 =  &_v1516;
    _v1560 = _t130;
     *__esp = socketfd + 1;
    L08071940();
    _v24 = _t130;
    __eflags = _v24;
    if(_v24 > 0) {
        L08061340(__ebx, _t201, __esi, "+ dns right!!");
        _v1544 =  &_v1388;
        _v1548 =  &_v1100;
        _v1552 = 0;
        _v1556 = 1024;
        _t133 = L08052B60(__esi, socketfd,  &_v1084);
        _v56 = _t133;
        _v60 =  &(_v60[4]);
         *__esp =  *_v60 & 65535 & 65535;
        _t137 = L08075240(__esp);
        _v44 = _t137 & 65535;
        _v60 =  &(_v60[2]);
         *__esp =  *_v60 & 65535 & 65535;
        _t142 = L08075240(__esp);
        _v40 = _t142 & 65535;
        _v60 =  &(_v60[6]);
        _v52 = 0;
        while(1) {
            __eflags = _v52 - _v44;
            if(_v52 >= _v44) {
                break;
            } else {
                goto L4;
            }
            while(1) {
L4:
                _v48 =  *_v60 & 255 & 255;
                _v60 =  &(_v60[_v48 + 1]);
                __eflags = _v48;
                if(_v48 == 0) {
                    break;
                } else {
                    goto L3;
                }
                goto L3;
            }
            _v60 =  &(_v60[4]);
            _v52 = _v52 + 1;
        }
        _v52 = 0;
        while(1) {
            __eflags = _v52 - _v40;
            if(_v52 >= _v40) {
                break;
            }
            L0806F910( &_v1360, 128);
            _v1104 = 0;
            parse_dns_name( &_v1084, _v60,  &_v1360,  &_v1104);
            _v60 =  &(_v60[2]);
             *__esp =  *_v60 & 65535 & 65535;
            _t159 = L08075240(__esp);
            _v36 = _t159 & 65535;
            _v60 =  &(_v60[4]);
             *__esp =  *_v60;
            _t163 = L08075230(__esp);
            _v32 = _t163;
            _v60 =  &(_v60[4]);
             *__esp =  *_v60 & 65535 & 65535;
            _t167 = L08075240(__esp);
            _v28 = _t167 & 65535;
            _v60 =  &(_v60[2]);
            __eflags = _v36 - 5;
            if(_v36 == 5) {
                L0806F910( &_v1232, 128);
                _v1104 = 0;
                parse_dns_name( &_v1084, _v60,  &_v1232,  &_v1104);
                _v60 =  &(_v60[_v28]);
            }
            __eflags = _v36 - 1;
            if(_v36 != 1) {
L14:
                _v52 = _v52 + 1;
                continue;
            }
            L0806F910( &_v1380, 20);
            __eflags = _v28 - 4;
            if(_v28 != 4) {
                _v60 =  &(_v60[_v28]);
                goto L14;
            }
            L0806F9E0(_t201, __esi,  &_v1384, _v60, _v28);
            L08073CB0( ?_? ( &_v1384), 2,  &_v1384,  &_v1380, 16);
             *__esp =  &_v1380;
            _t179 = L0806E770(__esp, __eflags);
            L0806F9E0(_t201, __esi, return_ip,  &_v1380, _t179);
            _v1536 = 1;
            return _v1536;
        }
        _v60 =  &(_v60[2]);
        _v1536 = 0;
        return _v1536;
    }
    L08061340(__ebx, _t201, __esi, "- dns over time!");
     *__esp = socketfd;
    L08052A50();
    _v1536 = 0;
    return _v1536;
L3:
    goto L4;
}